/**
 * 方法装饰器
 * 前置、后置功能
 */

/**
 *
 * @param targetClassPrototype 【RoleService.prototype】 方法原型
 * @param key 方法名
 * @param methodDecri 数据访问属性
 */
// function MyMethodDecorator(targetClassPrototype: any,key: string, methodDecri: PropertyDescriptor) {
//   console.log("targetClassPrototype:", targetClassPrototype)//
//   console.log("key:", key);
//   console.log('数据属性:',methodDecri);
//   methodDecri.value();//! 执行被装饰器修饰的方法  分配角色.....

// }

//? 封装一个装饰器
function MyMethodDecorator(methodPath: string) {

  console.log('methodPath',methodPath);
  
  return function (
    targetClassPrototype: any,
    key: string,
    methodDecri: PropertyDescriptor
  ) {
    console.log("targetClassPrototype:", targetClassPrototype); //
    console.log("key:", key);
    console.log("数据属性:", methodDecri);
    methodDecri.value(); //! 执行被装饰器修饰的方法  分配角色.....
  };
}

class RoleService {
  public roleName: string = "管理员";
  constructor() {}

  // @MyMethodDecorator // 不带参数的
  @MyMethodDecorator('search/food')
  DistribRoles() {
    // 分配角色
    console.log("分配角色.....");
  }
}

export {};
